package com.ruoyi.base.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 项目管理业务对象 base_bs_project
 *
 * @author zyb
 * @date 2024-09-24
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class BaseBsProjectBo extends BaseEntity {

    /**
     *
     */
//    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long projectId;

    /**
     * 项目类型
     */
//    @NotBlank(message = "项目类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectType;

    /**
     * 项目分类
     */
//    @NotBlank(message = "项目分类不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectCatalog;

    /**
     * 项目金额
     */
//    @NotNull(message = "项目金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal projectAmout;

    /**
     * 项目名称
     */
    @NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectName;

    /**
     * 所属单位id
     */
//    @NotNull(message = "所属单位id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long deptId;

    /**
     * 所属单位名称(冗余)
     */
//    @NotBlank(message = "所属单位名称(冗余)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String deptName;

    /**
     * 项目负责人
     */
//    @NotBlank(message = "项目负责人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectLeader;

    /**
     * 计划开始时间
     */
//    @NotNull(message = "计划开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date planBeginData;

    /**
     * 计划结束时间
     */
//    @NotNull(message = "计划结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date planEndData;

    /**
     * 实际开始时间
     */
//    @NotNull(message = "实际开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date factBeginData;

    /**
     * 实际开始时间
     */
//    @NotNull(message = "实际开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date factEndData;

    /**
     * 项目状态
     */
//    @NotBlank(message = "项目状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectStatus;

    /**
     * 项目审批状态
     */
//    @NotBlank(message = "项目审批状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String approvalStatus;

    /**
     * 项目编码
     */
//    @NotBlank(message = "项目编码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectCode;

    /**
     * 项目概况
     */
//    @NotBlank(message = "项目概况不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectGeneral;

    /**
     * 项目规模
     */
//    @NotBlank(message = "项目规模不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectSacle;

    /**
     * 投标价
     */
//    @NotNull(message = "投标价不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal bidPrice;

    /**
     * 控制价
     */
//    @NotNull(message = "控制价不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal controlPrice;

    /**
     * 税率
     */
//    @NotNull(message = "税率不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal taxRate;

    /**
     * 施工单位id
     */
//    @NotNull(message = "施工单位id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long shigongCompanyId;

    /**
     * 监理单位id
     */
//    @NotNull(message = "监理单位id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long jianliCompanyId;

    /**
     * 审计单位id
     */
//    @NotNull(message = "审计单位id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long shenjiCompanyId;

    /**
     * 地区
     */
//    @NotBlank(message = "地区不能为空", groups = { AddGroup.class, EditGroup.class })
    private String address;

    /**
     * 是否延期 0否 1是
     */
//    @NotBlank(message = "是否延期 0否 1是不能为空", groups = { AddGroup.class, EditGroup.class })
    private String postpone;


}
